package main

import (
	"encoding/json"
	"fmt"
	"log"

	"grpc-yaml-demo/config" // 请替换为你的实际模块路径
)

func main() {
	// 加载配置
	cfg, err := config.LoadConfig("config.yaml")
	if err != nil {
		log.Fatalf("加载配置失败: %v", err)
	}

	// 1. 直接打印（基础输出）
	fmt.Printf("原始结构: %+v\n", cfg)

	// 2. 格式化打印（推荐，更易读）
	fmt.Println("\n=== 格式化配置内容 ===")
	cfgJSON, _ := json.MarshalIndent(cfg, "", "  ")
	fmt.Println(string(cfgJSON))

	// 接下来是成员访问的示例
	fmt.Printf("\n=== 成员访问示例 ===")
	fmt.Printf("\nGRPC 服务器主机: %s", cfg.GRPC.Server.Host)
	fmt.Printf("\n数据库用户名: %s", cfg.Database.Username)
	fmt.Printf("\n日志级别: %s", cfg.Logging.Level)

	fmt.Printf("找到 %d 个服务器配置：\n", len(cfg.Servers))
	for i, server := range cfg.Servers {
		fmt.Printf("\n--- 服务器 %d ---\n", i+1)
		fmt.Printf("  描述: %s\n", server.Description)
		fmt.Printf("  IP 地址: %s\n", server.IP)
		fmt.Printf("  端口: %s\n", server.Port)
		fmt.Printf("  用户名: %s\n", server.Username)
		fmt.Printf("  密码: %s\n", server.Password) // 注意：实际应用中密码应安全处理
		fmt.Printf("  数据库类型: %s\n", server.DbType)
	}
}
